package com.ruoyi.system.service;

import com.github.pagehelper.Page;
import com.ruoyi.system.domain.TcyPlatformOrder;

import java.util.List;

/**
 * 平台支付订单Service接口
 *
 * @author ruoyi
 * @date 2025-03-14
 */
public interface ITcyPlatformOrderService
{

    /**
     * 查询，根据外部交易号
     *
     * @param outTradeNo 外部交易号
     * @return 平台支付订单集合
     */
     TcyPlatformOrder queryByOutTradeNo(String outTradeNo);

    /**
     * 查询待开发票订单（带分页）
     */
    Page<TcyPlatformOrder> findUninvoicedOrdersWithPage(String openid, Page<TcyPlatformOrder> page);


    /**
     * 待开发票订单列表
     *
     * @param openid 用户OpenID
     * @return 平台支付订单
     */
    List<TcyPlatformOrder>  findUninvoicedOrders(String openid);


    /**
     * 查询平台支付订单
     *
     * @param id 平台支付订单主键
     * @return 平台支付订单
     */
    public TcyPlatformOrder selectTcyPlatformOrderById(Long id);

    /**
     * 查询平台支付订单列表
     *
     * @param tcyPlatformOrder 平台支付订单
     * @return 平台支付订单集合
     */
    public List<TcyPlatformOrder> selectTcyPlatformOrderList(TcyPlatformOrder tcyPlatformOrder);

    /**
     * 新增平台支付订单
     *
     * @param tcyPlatformOrder 平台支付订单
     * @return 结果
     */
    public int insertTcyPlatformOrder(TcyPlatformOrder tcyPlatformOrder);

    /**
     * 修改平台支付订单
     *
     * @param tcyPlatformOrder 平台支付订单
     * @return 结果
     */
    public int updateTcyPlatformOrder(TcyPlatformOrder tcyPlatformOrder);

    /**
     * 根据外部交易号，修改第三方支付订单号
     *
     * @param tcyPlatformOrder 平台支付订单
     * @return 结果
     */
    public int updateTcyPlatformOrderBy(TcyPlatformOrder tcyPlatformOrder);


    /**
     * 批量删除平台支付订单
     *
     * @param ids 需要删除的平台支付订单主键集合
     * @return 结果
     */
    public int deleteTcyPlatformOrderByIds(Long[] ids);

    /**
     * 删除平台支付订单信息
     *
     * @param id 平台支付订单主键
     * @return 结果
     */
    public int deleteTcyPlatformOrderById(Long id);

    /**
     * 更新订单状态为已开票
     *
     * @param outTradeNo 外部交易号
     * @return 结果
     */
    int updateKaipiaoStatusByOrderSn(String outTradeNo,int kaipiaoStatus);
}
